7884 结构归纳推理引擎

V10 技 术 白 皮 书
把任意未知二进制文件 · 自动变成结构化描述
32
归纳管线阶段
26
关系类型
7
标准输出格式
46
变异策略
版本 V10.0 | 2026 年 6 月 |

摘要

7884 结构归纳推理引擎是一套从二进制样本中自动推断协议与文件格式结构定义的软件系统。它不依赖预置的格式模板,而是通过对多个样本进行横向比较、特征分析和统计归纳,逐步逼近样本背后真实的结构规则。引擎采用 32 阶段自适应管线架构,集成了感知分析、结构归纳、自反驳验证、蒙特卡洛搜索、知识迁移等能力,并可直接输出模糊测试脚本,形成"分析—归纳—验证—测试"的完整工作闭环。

本文档面向技术决策者与安全研究人员,介绍 7884 引擎的设计思路、系统能力边界、工程特性及其在格式逆向领域中的定位。文中所述内容均基于公开可验证的工程事实,不涉及核心算法推导与内部实现细节。

一、背景与问题域

在网络安全、数据恢复、数字取证和协议逆向工程等领域,分析人员经常面临一个共同的难题:面对一个未知的二进制文件或网络协议数据流,如何快速理解其内部结构——哪些字节是头部字段,哪些是数据载荷,字段之间存在怎样的约束关系?

传统做法通常有两种路径:一是依靠人工经验逐字节观察分析,效率低且易出错;二是使用基于已知格式模板的解析工具,但这类工具只能处理已收录的格式,对新格式或私有格式无能为力。

7884 引擎尝试提供第三条路径:不预设模板,而是让机器从样本中"观察"和"归纳"。给定一组同类样本,引擎尝试回答几个基本问题:

这些问题并不容易回答,7884 引擎目前的回答质量也远非完美。但它在持续的工程迭代中逐步缩小了"人工分析"与"自动推断"之间的差距,这是本文档希望如实记录的内容。

二、设计理念

2.0 愿景与定位

安全行业在过去几十年中投入了大量精力为已知格式编写解析器、模板和规则——本质上是在给已知格式"追债"。每出现一种新格式或私有协议,分析人员就需要从零开始人工逆向。7884 引擎尝试回答的问题是:能否让机器自动完成这一过程?

我们的目标是将任意未知二进制文件自动转化为结构化描述——不是对已有工具的改良,而是探索一条不同的技术路径。

不限格式

不预设任何格式的结构模板。引擎通过通用归纳机制处理样本,无论它是公开标准还是从未见过的私有协议。内置的格式特征库仅用于初步识别线索,不提供结构定义。

不靠人写规则

不需要用户编写二进制模板(BT)、结构定义(KSY)或模糊测试脚本(Peach XML)。引擎从样本中自行归纳。

不是分析,是制造

引擎的输出不是一份"分析报告",而是可直接用于下游工具链的结构化产物——010 Editor 模板、Peach 脚本、Kaitai 定义、YARA 规则等。

我们不认为自己在和谁竞争。手工模板工具、模糊测试引擎和 LLM 方案解决的是不同层面的问题——不是更好,是不同。如果一定要说有什么对手,那唯一的对手是"品类认知"——让更多人理解"自动结构归纳"这件事本身的价值。关于与各类方案的具体差异,请参见第十五章。

2.1 通用启发式,而非专有模板

7884 引擎在架构层面确立了一条核心原则:禁止为任何特定格式编写专用解析代码。这意味着引擎不会内置 BMP 头部解析器、不会预设 ELF 格式布局、不会为任何已知或未知格式安排"特例"处理路径。所有格式推断能力的提升,必须通过改进通用的启发式算法来实现。

这一设计的考量在于:专有格式解析虽然能快速获得高精度,但无法迁移到未知格式;而通用启发式方法虽然起步艰难,但一旦积累起足够的归纳能力,就能覆盖任意格式——包括那些尚未被收录或从未公开的私有协议。

这条原则的代价 — 通用启发式方法在已知格式上的精度,通常低于专有解析器。这是有意为之的取舍:我们愿意在已知格式上牺牲一些精度,以换取对未知格式的探索能力。
关于容器格式的例外 — 引擎内置了 ZIP、GZIP、TAR 的容器解包能力(详见第六章),这属于预处理阶段的工程性支持,而非结构归纳管线的一部分。容器解包的目的是暴露内部真实数据,解包后的数据仍通过通用启发式方法进行归纳。我们承认这构成了对上述原则的部分偏离,但这是基于实用考量——如果引擎无法处理容器封装,其在真实场景中的适用性将极其有限。

2.2 数据驱动,而非规则驱动

引擎内部维护了一个包含 20,085 种文件格式特征的轻量级数据库。需要说明的是,这个数据库并不存储每种格式的完整模板定义,而是记录格式的 Magic 签名、典型偏移模式、常见约束关系等外围线索。这些线索的作用类似于"提示"而非"答案"——引擎据此调整通用归纳策略的方向,而不是直接套用预先定义好的格式结构。

2.3 置信度驱动,而非二元判断

在结构归纳过程中,引擎不做"这个字段一定是什么"的绝对判断,而是为每个推断结果赋予一个置信度分数。系统内部设有从"早期探索"到"收敛稳定"的多级状态,只有当多个维度的证据指向同一结论时,引擎才会将结果标记为可用。这种设计允许引擎在信息不足时保持审慎,在有足够证据时才做出判断。

2.4 闭环验证,而非单向输出

引擎的设计目标不是仅输出一个结构定义就结束,而是构建一个"分析—归纳—验证—测试"的完整闭环。归纳出的结构定义可以直接用于模糊测试样本生成,生成的样本又可以反过来验证结构定义的正确性。这种闭环设计使得引擎的输出不再是"一次性结论",而是可以被持续验证和改进的"工作假设"。

2.5 零先验:纯黑盒路线

7884 引擎在架构层面确立了一项根本性的约束:不从目标程序中获取任何信息。它不需要源码、不需要可执行文件、不需要插桩、不需要调试符号、不需要运行时日志,甚至不需要知道目标程序是什么语言编写的。

引擎的全部知识来源只有一个——样本本身。这意味着在以下场景中,7884 是少数仍然可用的方案:

选择这条路径的代价是巨大的。没有覆盖率反馈指引方向,没有运行时信息帮助验证,引擎必须在黑暗中独自摸索。相比之下,插桩引导的灰盒方案在短期回报上远远领先。

然而我们相信:纯黑盒才是未来 20-50 年的主流方向。原因有三:

我们很清楚当前纯黑盒归纳的质量远不如插桩辅助方案,也知道这条路可能需要十年甚至更长时间才能走通。但这正是我们选择它的原因——如果纯黑盒结构归纳这条路能走通,它解决的问题是目前任何其他方案都无法替代的。我们愿意把赌注押在这条赛道上。

三、系统架构概览

7884 引擎采用管线化架构设计,输入样本依次经过多个处理阶段,每个阶段负责一个独立的推断任务。整体架构可划分为以下层次:

输入层

样本加载、容器穿透(ZIP/GZIP/TAR)、预解码

感知层

数据区域检测、文本分类、编码识别、格式轮廓感知

归纳层

结构聚类、字段分析、关系发现、候选生成与融合

推理层

蒙特卡洛搜索、自反驳验证、交叉验证、贝叶斯推断

输出层

多格式结果生成(二进制模板、模糊测试脚本、可视化报告等)

知识层

增量学习、历史知识迁移、先验知识集成、格式特征库

管线由调度器(Pipeline Orchestrator)统一管理,根据样本特性动态决定各阶段的执行策略——部分阶段始终执行,部分阶段仅在条件满足时触发,还有部分阶段按需调用。这种设计避免了对所有样本一刀切地执行全部流程,从而在一定程度上控制了不必要的计算开销。

完整工作流

样本输入
感知分析
结构归纳
验证评估
结果输出
模糊测试

从样本输入到模糊测试,形成可验证的完整闭环

四、归纳管线

引擎的核心归纳过程分为 32 个可独立调度阶段。以下仅从功能角度描述其宏观流程,不涉及各阶段内部的具体算法实现。

阶段类别功能描述
样本加载始终执行多线程加载样本,提取基础特征(熵值、类型识别、浮点检测、变长边界推断)
容器穿透条件触发ZIP/GZIP/TAR 递归解包,压缩炸弹防护
感知分析始终执行数据/文本区域感知,熵曲线分析,格式轮廓识别
聚类自适应根据样本相似度进行聚类分组(支持多种聚类算法)
字段分析自适应字段边界检测、模式识别、类型推断
关系发现自适应字段之间的数值、偏移、大小等约束关系探索
嵌套搜索自适应深层嵌套与重复结构检测(TLV、自引用、循环)
自反驳条件触发尝试用已有结论否定自身,检验推断的鲁棒性
搜索优化条件触发蒙特卡洛树搜索,探索候选结构空间
候选融合条件触发多候选结构的集成与投票合并
数据合并条件触发置信度驱动的字段合并决策(合并/封装/保持独立)
评估与排名始终执行多维度质量评估,结果排序与输出
增量学习条件触发知识持久化与历史经验迁移

* "自适应"表示引擎根据样本复杂度与中间结果的置信度自动决定是否执行该阶段。

说明 — 上述阶段划分经历了多个版本的迭代调整。阶段的增减并非为了追求数量,而是在实践中发现某些推断任务需要独立的处理上下文才能产生更可靠的结果。32 这个数字是当前版本的自然产物,不代表未来的版本一定会保持这个数量。

五、感知分析能力

感知分析是管线的前置环节,负责在进入复杂归纳流程之前,对样本进行初步"体检"。引擎在这一环节主要完成以下工作:

数据区域感知

基于熵曲线(256 字节窗口)和多种步长检测策略,识别载荷区域、容器的可能边界。支持 44 种格式轮廓的初步识别和容器模式检测(PE、ELF、Mach-O)。

文本感知

对样本中的文本区域进行分类(30 种以上的文本格式类别),检测编码类型(UTF-8、UTF-16、GBK 等),提取文本结构特征。

区域优先级管理

当样本中不同区域类型发生重叠时,按"文本 > 载荷 > 二进制"的优先级进行裁决,并提供细粒度的区域子类型分类(头部/载荷/调色板/表格/二进制)。

加密/压缩检测

基于统计特征判断样本是否经过加密或压缩处理,避免在不可分析区域上浪费计算资源。

六、容器穿透能力

许多实际场景中的二进制样本并非"裸格式",而是被封装在容器(如 ZIP、GZIP、TAR)内部。引擎内置了容器穿透能力,能够递归解包嵌套容器,暴露其中的真实数据。

功能实现概况
DEFLATE 解压完整实现 RFC 1951(支持 Stored / Fixed Huffman / Dynamic Huffman)
容器格式ZIP、GZIP、TAR 完整解包,含 CRC32 校验
递归穿透最大支持 16 层嵌套解包
安全防护压缩炸弹防护:100 MB 单文件上限 / 1 GB 总量上限 / 1000:1 最大压缩比 / 1000 成员上限
重打包支持 GZIP STORE 方法与 ZIP 成员替换,用于模糊测试样本的加壳输出

容器穿透能力的意义在于:协议逆向的样本往往来自真实网络流量或文件系统,直接暴露在容器外层的可能性很低。如果引擎只能分析"裸格式",其实用价值将大打折扣。

七、验证与自反驳机制

结构归纳的输出是否可信,取决于验证机制的严谨程度。7884 引擎在验证环节投入了较大的工程努力,构建了多层次的验证体系。

7.1 自反驳验证

自反驳是 7884 引擎中一个较为独特的验证机制。其核心思想是:在得到一个归纳结论后,引擎会主动尝试寻找证据来否定这个结论。如果反驳失败(即找不到足够强的否定证据),则结论的置信度得到增强;如果反驳成功,引擎会降低该结论的置信度或将其标记为不确定。

这种"以己之矛攻己之盾"的思路,与科学方法论中的"可证伪性"原则一脉相承。它使得引擎的输出不是"因为没发现错误所以正确",而是"因为尝试了否定但未成功,所以暂时可信"——两者的认识论基础是不同的。

7.2 交叉验证

引擎支持从不同的归纳路径出发,独立得出各自的结论,然后比较这些结论之间的一致程度。如果多条路径指向相同或高度相似的结构定义,则结果的可靠性自然更高。这种机制在样本数量充足时效果更为明显。

7.3 合并质量验证

引擎在字段合并环节设有独立的质量验证阶段,通过精确率、召回率和 F1 分数三个指标来评估合并决策的质量。这一验证机制确保了合并操作不会导致结构信息的非预期丢失。

关于验证的局限 — 自反驳和交叉验证能够提高结果的可信度,但无法保证结果的绝对正确性。验证机制的作用是"降低误判概率",而非"消除误判"。在实际使用中,仍建议将引擎输出作为参考起点而非最终结论。

八、关系发现能力

字段间的约束关系是格式定义中最有价值的信息之一。一个字段表示另一个字段的大小、某个字段指向另一个字段的偏移、两个字段的值满足某种数学关系——这些约束关系的发现,能够将零散的字段定义串联成有机的结构描述。

7884 引擎目前支持 26 种关系类型的自动发现,涵盖以下几大类:

8
大小关系类
4
偏移/指针类
6
数学关系类
8
计数/等值/其他

关系发现模块的输出会同时标注置信度,只有达到一定阈值的关系才会被纳入最终的结构定义。这一机制在 V10 版本中经历了较大幅度的重构——关系类型从 12 种扩展到 26 种,同时在 10 组 71 个标注关系的测试中,召回率从 70.4% 提升至 97.2%,误报率从 8.2% 降至 4.0%。

关于关系发现 — 关系发现是引擎中误报风险较高的环节。二进制数据中存在大量"巧合"的数值关联(如 4 字节对齐导致的伪关系),引擎通过多种策略来过滤这类误报,但无法完全消除。在实际使用中,建议重点关注高置信度的关系发现结果。

九、先验知识集成

7884 引擎支持与外部先验知识系统(IFFA)的集成——这是一个可选的外部模块,由用户决定是否启用。7884 引擎将 IFFA 的输出作为归纳过程中的"参考意见"而非"标准答案"来使用。

9.1 可信度分级

引擎对 IFFA 提供的信息按可信度分为三级:

可信度处理方式典型场景
HIGH高权重采纳,作为归纳过程的强线索Magic Token 识别、文件大小关系
MEDIUM正常权重采纳,作为参考信息固定偏移字段
LOW忽略,不纳入归纳过程重复结构/嵌套(可靠性不足)

9.2 集成策略

IFFA 集成遵循"辅助而非主导"的原则:

设计考量 — IFFA 集成的目标是"借助外部知识提升归纳质量",而非"依赖外部知识完成归纳"。引擎在 IFFA 不可用或输出质量不佳时,仍能独立完成结构归纳流程,只是可能缺少部分高置信度的关系线索。

十、知识迁移与增量学习

7884 引擎具备知识持久化和迁移能力——本次分析获得的经验可以在后续分析中复用,从而在相似格式上获得更快的收敛速度和更高的归纳质量。

知识持久化

每次分析完成后,引擎可将归纳结果序列化保存。历史知识以贝叶斯先验的形式加载到后续分析中,为归纳过程提供初始倾向。

置信度衰减

历史知识在加载时自动应用 0.8 倍的置信度衰减,防止旧经验过度影响新分析。衰减机制确保引擎对新的证据保持开放态度。

负迁移保护

当历史知识与当前样本的特征差异较大时,引擎会降低其影响力,避免不相关的历史经验导致归纳方向偏移。

增量改进

随着对同一类格式分析次数的增加,引擎对该格式的归纳质量通常会逐步提升。这是一种渐进式的学习过程,而非一次性训练。

关于增量学习的说明 — 当前的增量学习机制是轻量级的,不涉及模型参数的在线更新。它的作用更接近于"提供先验倾向"而非"深度学习"。我们在这个方向上的探索仍处于早期阶段。

十一、质量评估体系

7884 引擎的自我评估体系以 OVERALL 评分为核心,从多个维度衡量归纳结果的质量。引擎内部和外部评估分别采用不同的指标体系。

11.1 引擎内部评分

OVERALL 评分由五个维度加权构成:

覆盖率
25%
结构一致
20%
推理置信
20%
交叉验证
20%
关系饱和
15%

引擎将评分结果映射为五个状态:收敛稳定(≥90%)、持续进步(≥70%)、仍在搜索(≥40%)、起步阶段(≥10%)和结构不稳定(<10%)。

11.2 外部评估框架

为客观衡量引擎输出的质量,我们建立了一套 12 项指标的外部评估框架,分四组对输出结果进行量化评分:

组别指标权重评估内容
A组
引擎健康
R1 运行得分10%退出码、输出文件完整性、JSON/XML 可解析性
R2 语法合规5%7 种输出文件的语法正确性
B组
结构完整
R3 字段质量15%头部字段保留率 + Payload 合并度(分区评分)
R4 头部保留5%前 256 字节关键字段的保留情况
R5 关系保留15%字段间约束关系的保留率
R6 语义保留5%语义标签的一致性
C组
XML 质量
R7 字节覆盖15%DataModel 对样本字节的覆盖比例
R8 元素分布5%元素类型的分布稳定性
R9 Fixup/Relation10%校验和修复与约束关系的保留
R10 属性退化10%匹配元素的属性一致性
D组
综合评估
R11 质量分5%引擎自评质量分的变化趋势
R12 多格式一致5%JSON 与 XML 输出的交叉验证一致性

该评估框架的一个设计特点是分区评分:将字段分为"头部字段"和"Payload 字段"分别评估——头部字段的合并意味着结构信息丢失(退化),而 Payload 字段的合并通常是正确的改进(减少碎片化)。这一区分避免了简单计数法对合并操作的误判。

关于评分 — 高分并不意味着格式定义一定正确,低分也不意味着结果毫无价值——评分体系是引擎自我认知的一个参考信号,而非绝对真理。外部评估框架的价值在于提供版本间的可比性,而非给出绝对评判。

十二、差分分析

当拥有多个同类样本时,引擎可以执行跨样本的差分分析,识别样本之间的结构差异。这一能力对于理解格式的版本演进、可选字段和变体结构具有实际价值。

引擎识别以下五类差分区域:

STABLE

跨样本稳定不变的区域

VARIABLE

值可变但结构固定的区域

INSERTION

部分样本独有的插入区域

DELETION

部分样本缺失的删除区域

VALUE_SHIFT

数值整体偏移的区域

差分分析的结果不仅输出为独立的差分报告,还会反馈到归纳管线中——稳定区域获得更高的结构置信度,可变区域被标记为候选的变长字段或可选字段。

十三、模糊测试工作流

7884 引擎的输出可以直接驱动模糊测试,形成"结构归纳 → 模糊测试 → 样本验证"的完整工作流。这是引擎设计中的一个重要闭环。

13.1 变异策略

引擎内置了 46 种变异策略,提供 Basic 和 Pro 两种引擎:

Basic 引擎

基础变异策略,覆盖常见的模糊测试需求:位翻转、字节替换、边界值插入、整数溢出等。

Pro 引擎

增强变异策略,利用结构定义中的关系信息和语义标签进行感知变异:基于 DiffType 的定向变异、数学公式关系感知变异等。

13.2 加壳输出

生成的模糊测试样本支持 GZIP 和 ZIP 加壳输出,使得测试样本可以直接用于测试那些需要从容器中读取输入的目标程序。

13.3 闭环验证

结构归纳
Peach XML
变异生成
加壳输出
目标测试

从结构归纳到模糊测试的完整闭环

关于模糊测试 — 引擎生成的模糊测试脚本遵循 7884 自有的 XML 格式规范(根标签为 <7884>),内部兼容 Peach Fuzzer 的变异引擎。这种设计既保持了格式的自主性,又确保了与主流模糊测试工具的互操作性。

十四、多格式输出

引擎的归纳结果可以通过多种格式输出,以对接不同的下游工具链:

010 Editor BT

二进制模板文件,用于 010 Editor 可视化浏览

Peach XML

模糊测试脚本,支持 46 种变异策略

Kaitai Struct

KSY 格式,可生成多语言解析代码

YARA

格式检测规则,用于样本识别与分类

Python

格式校验与约束验证脚本,含自动修复能力

HTML / JSON

可视化报告与结构化数据导出

输出格式的多样性考虑的是不同用户群体的工作习惯——安全研究人员、协议逆向工程师、模糊测试人员等各自使用不同的工具链,引擎不预设一种"最优输出",而是尽可能覆盖主流工具的需求。

三种运行模式

模式用途输入
Normal完整结构归纳分析样本目录
Fast从已有模型快速生成脚本模型文件 + 单个样本
Gen模糊测试样本生成Peach XML 文件

十五、定位与差异

7884 引擎的核心输出之一是模糊测试脚本,因此其最直接的竞争对象是模糊测试工具。以下将 7884 与当前主流的黑盒模糊测试方案进行对比,说明结构归纳路径带来的差异化价值。

15.1 与覆盖率引导模糊测试对比(AFL++ / libFuzzer / Honggfuzz)

AFL++、libFuzzer、Honggfuzz 等是当前最主流的覆盖率引导模糊测试工具。它们通过插桩目标程序获取代码覆盖率反馈,以此引导变异方向,在发现代码路径方面效率极高。

维度AFL++ / libFuzzer / Honggfuzz7884 引擎
测试前提 需要目标程序可执行且可插桩(白盒/灰盒) 无需目标程序,仅需样本文件(纯黑盒)
变异策略 覆盖率引导的随机变异(位翻转、算术、拼接等) 结构感知变异(46 种策略,基于字段语义和约束关系)
格式理解 不理解格式结构,变异是"盲目"的 先归纳结构再变异,变异"知道"字段边界和语义
校验和字段 随机变异大概率破坏校验和,导致样本被早期拒绝 自动发现校验和覆盖范围与算法,变异后自动修复
关系约束 无法感知字段间约束(如长度字段与数据区域的对应) 26 种关系类型自动发现,变异时保持约束一致性
无源码场景 需 QEMU/Unicorn 模式模拟执行,性能损失严重 天然黑盒,不依赖目标程序执行
初始种子 需人工提供有效种子文件 从样本自动归纳结构,自动生成变异样本
互补而非对立 — 覆盖率引导模糊测试在"发现代码路径"方面效率极高,7884 在"生成结构合理的变异样本"方面有优势。在实际工作中,两者可以串联使用:7884 生成结构感知的初始种子和变异语料,再由 AFL++ 进行覆盖率引导的深度探索。

15.2 与协议/结构感知模糊测试对比(Peach Fuzzer / Sulley / Boofuzz)

Peach Fuzzer、Sulley、Boofuzz 等是结构感知模糊测试工具,需要用户手工定义数据模型(DataModel)后才能开始测试。7884 引擎的模糊测试输出正是兼容这类工具的格式,但关键区别在于数据模型的来源。

维度Peach / Sulley / Boofuzz7884 引擎
数据模型来源 完全依赖人工编写 从样本自动归纳生成
模型编写成本 高——需要深入理解格式规范,耗时数小时到数天 低——提供样本后自动生成,数分钟内完成
未知格式 无法开始——没有规范就无法编写模型 可以直接启动——自动归纳提供初始模型
关系与约束 人工定义 size/count/offset 关系 26 种关系类型自动发现并注入
校验和修复 人工编写 Fixup 规则 自动发现校验和算法和覆盖范围,自动生成 Fixup
迭代效率 格式变更需手动更新模型 重新分析样本即可更新模型
关于精度 — 人工编写的 Peach DataModel 在已知格式上的精度和完整度远高于 7884 的自动归纳结果。7884 的价值在于:当没有现成模型、没有格式规范、甚至面对完全未知的私有协议时,提供一个可立即开始测试的初始模型。后续可以在此基础上人工精调。

15.3 与 LLM 辅助模糊测试对比

近期,利用大语言模型(如 DeepSeek、GLM、GPT)辅助模糊测试成为一个活跃的研究方向。LLM 可以根据格式描述或样本生成变异策略,构成 7884 引擎在当前最值得关注的新兴竞争路径。

维度LLM 辅助模糊测试7884 引擎
结构获取方式 从训练语料中"回忆"格式知识,或根据样本描述推测 从样本数值特征中归纳,不依赖训练语料
数值精度 字段偏移、大小等精确数值容易出错 数值级确定性输出,偏移/大小/关系均有确切值
一致性 同一输入多次生成可能产生不同模型 确定性管线,相同输入产生相同输出
多样本利用 通常单次处理单文件,多样本需人工编排 原生多样本横向比较,差分分析自动执行
私有协议 依赖训练数据中是否包含相似格式知识 不依赖训练数据,通用归纳机制直接分析
部署方式 需云端 API 或大显存 GPU 本地单机运行,CPU 即可
输出形式 自然语言描述或代码片段,需人工整合到测试框架 直接输出 Peach XML / KSY / BT,开箱即用
上下文窗口 受 token 限制,大文件需截断或分片 无 token 限制,文件级完整分析
关于 LLM — LLM 在格式理解方面的进步速度很快,我们对此保持关注和尊重。LLM 擅长"理解语义"——从字段名推测含义、从上下文推断用途;7884 擅长"发现结构"——从数值特征推断偏移、大小和约束关系。两者解决的是不同层次的问题。在实际场景中,LLM 的语义理解能力与 7884 的数值归纳能力可以形成互补。

15.4 7884 引擎的独特定位

综合以上对比,7884 引擎在模糊测试领域的独特定位可以概括为:

关于品类认知 — 我们认为当前市场上没有与 7884 直接对等的产品。"自动结构归纳"是一个尚未被充分定义的技术品类,而 7884 是这条路径上的早期探索者。我们希望的不是证明自己比谁更好,而是让更多人理解:从二进制样本中自动推断结构定义这件事,是可行的、有价值的。

15.5 一些我们的理解

十六、工程实现概况

编程语言

C11 (MSVC v143),注重对底层二进制数据的直接操作能力

构建系统

MSBuild / Visual Studio 2022 (x64)

并行框架

OpenMP 2.0 + Win32 Threads,在多核 CPU 上实现并行加速

GPU 加速

CUDA 支持,在可用 GPU 上加速部分计算路径,自动在 GPU 与 CPU 之间切换

外部依赖

极简依赖:cJSON + SQLite3(amalgamation 内嵌),无需安装额外运行环境

格式特征库

内置 20,085 种常见文件格式特征(嵌入式 SQLite3 数据库,前缀树 O(k) 查找)

选择 C 语言而非更高级的语言,主要考虑的是对二进制数据的细粒度控制能力以及执行效率。代价是开发效率和代码可维护性不如高级语言,这是一个有意为之的取舍。

性能优化基线

引擎在关键路径上进行了多轮性能优化,以下是一次典型优化的效果记录:

模块优化前优化后改善
交互式分析14,902 ms1,147 ms↓92.3%
结果生成14,003 ms5,775 ms↓58.8%
总耗时32,024 ms17,789 ms↓44.4%

* 以上数据来自特定测试场景,实际性能因样本复杂度和硬件配置而异。

十七、已知限制

以下列出当前版本已知的局限性和有意的设计取舍,供评估时参考:

Choice 分支推断

当前版本固定使用 4 分支泛化策略,不尝试精确推断分支数量。这是为了在模糊测试场景中获得更好的泛化效果而做出的设计取舍。

GPU 主力路径

GPU 加速桥接已实现,但 CPU 路径仍是主力计算路径。GPU 主要用于特定的并行计算任务(如大规模校验和碰撞)。

文本格式支持

引擎的归纳能力目前以二进制格式为主,对纯文本格式的支持仍需加强。这是一个持续改进的方向。

结果质量波动

对于高度混淆、加密或结构极度不规则的样本,引擎的输出质量可能波动较大。推荐在多个样本上观察结果的稳定性。

样本数量敏感

引擎依赖多样本横向比较,对于仅有一个样本的场景,部分归纳功能(如差异分析、IFFA 集成)无法生效。

大型样本处理

对超过百 MB 的超大样本,引擎的处理效率尚未充分优化,建议优先使用代表性样本片段进行分析。

十八、使用场景建议

基于当前的工程状态,以下场景可能适合使用 7884 引擎进行辅助分析:

不推荐的使用方式 — 引擎不适合作为自动化格式解析的"黑盒"替代方案。其输出结果应当由有经验的分析人员进行审核和修正,不应直接用于生产环境的关键决策。

结语

7884 结构归纳推理引擎是一个仍在快速演进的工程探索项目。它的目标不是证明自己比谁更强,而是探索一条不同的技术路径——让机器在不依赖任何先验知识的条件下,仅凭样本就能理解二进制文件的结构

我们清楚地认识到,纯黑盒结构归纳是一条困难的路。没有覆盖率反馈指引方向,没有运行时信息帮助验证,引擎必须在黑暗中独自摸索。在当前阶段,它的输出质量远不如插桩辅助方案,也需要有经验的分析人员进行审核和修正。

但我们的判断是:安全对抗的终局一定是黑盒场景越来越多、插桩条件越来越苛刻。如果纯黑盒结构归纳这条路能走通,它解决的是未来 20-50 年的核心问题——不是锦上添花,而是底层基础设施。格式定义是模糊测试的氧气,没有氧气,模糊测试引擎再强也只是摆设。7884 正是那个给格式定义的人——它是模糊测试引擎的"上游母机"。

我们选择把赌注押在这里。不是因为这条路容易,恰恰是因为它难。

我们希望在 5 年或 10 年后再回看这份文档时,能够觉得当时的认知过于浅薄——那意味着这条路径真的走通了。